package jp.seraph.same.model;

import jp.seraph.jspf.pose.Pose;

public interface PoseModel {

    public int getJointCount();

    public JointModel getJointModel(int aIndex);

    public JointModel getJointModel(String aJointName);

    public void selectJoint(String aJointName);

    public void selectJoint(int aIndex);

    public String getSelectedJointName();

    public JointModel getSelectedJointModel();

    public void addListener(PoseModelListener aListener);

    /**
     * 対象のリスナーが、このモデルに設定されていれば削除する。
     * 
     * @param aListener
     * @return 削除が成功したらtrue 対象リスナが見つからなければfalse
     */
    public boolean removeListener(PoseModelListener aListener);

    public Pose createPose();

    /**
     * このポーズモデルが表すポーズを引数のポーズに変更する。
     * 
     * @param aPose
     */
    public void setPose(Pose aPose);
}
